﻿using System;
using System.Collections.Generic;
using System.Text;

namespace SilverlightCairngorm.Control
{
    /// <summary>
    /// A parent Class for all Cairngorm events.
    /// </summary>
    public class CairngormEvent
    {
        /// <summary>
        /// every event must have a unique name - multiple, similar, events 
        /// may be grouped in one class - as long as the "Name" property
        /// changes from one event to the other.
        /// </summary>
        public string Name { get; set; }

		/// <summary>
		/// The data property can be used to hold information to be passed with the event
        /// in cases where the developer does not want to extend the CairngormEvent class.
        /// However, it is recommended that specific classes are created for each type
        /// of event to be dispatched.
		/// </summary>
		public object Data { get; set; }

		/// <summary>
		/// Constructor of a cairngorm event
		/// </summary>
		/// <param name="typeName"></param>
		public CairngormEvent( String typeName)
		{
			this.Name = typeName;
		}

		/// <summary>
		/// Helper funtion to raise event without requiring client code to call CairngormEventDispatcher.getInstance()
		/// </summary>
		public void dispatch()
		{
			CairngormEventDispatcher.Instance.dispatchEvent(this);
		}

    }
}
